/**
 * 使用这个自己封装的方法发送请求（我们要的是什么）
 * - 该方法还得支持传入配置参数
 * - request这个方法必须能够发送请求
 * - 这个方法返回 Promise
 * - 把请求后得到的数据通过 resolve 方法传给 then 的回调函数
 */

const baseURL = "https://gmall-prod.atguigu.cn/mall-api";
export default function request(options) {
  options.url = baseURL + options.url;
  return new Promise((resolve, reject) => {
    // 显示 loading
    wx.showLoading({
      title: "请求中...",
    });
    wx.request({
      ...options,
      header: {
        // 从 storage 中获取到登录的 token
        token: wx.getStorageSync("token"),
      },
      success: (res) => {
        //即使请求失败了,也会执行success 而不是fail

        if (res.statusCode !== 200) {
          wx.showToast({
            title: "请求失败",
            icon: "error",
          });
          reject(err);
        } else {
          //处理业务的错误
          if (res.data.code != 200) {
            reject(res.data);
          } else {
            resolve(res.data.data);
          }
          resolve(res);
        }
      },
      fail: (err) => {
        //当失败的时候,提示错误信息(这里的错误并不是表示请求失败,而是调用wx.request方法的时候出现了错误,比如传了错误的参数值之类)
        wx.showToast({
          title: "调用接口失败",
          icon: "error",
        });
        reject(err);
      },
      complete: () => {
        // 无论成功还是失败了，都会执行 complete 回调
        wx.hideLoading();
      },
    });
  });
}
